home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / Feelin021015 / Examples / 03.e < prev    next >
Text File  |  2002-10-28  |  6KB  |  197 lines

  1. OPT PREPROCESS
  2.  
  3. MODULE 'intuition/intuition',
  4.        'utility',
  5.        'feelin','libraries/feelin','a4'
  6.  
  7. ->PROC OBJ
  8. OBJECT localobjectdata
  9.    mode:INT
  10.    way
  11. ENDOBJECT
  12.  
  13. ENUM FA_CrazyGauge_Mode = FCCA_BASE
  14.  
  15. ENUM FV_CrazyGauge_More,
  16.      FV_CrazyGauge_Less,
  17.      FV_CrazyGauge_TwoWays,
  18.      FV_CrazyGauge_Crary
  19. ->ENDPROC
  20.  
  21. DEF feelinbase:PTR TO feelinbase
  22.  
  23. PROC main()
  24.    DEF fcc:PTR TO feelinClass,
  25.        c,w, g,b
  26.  
  27.    sys_SGlob()
  28.  
  29.    IF feelinbase := OpenLibrary('feelin.library',FV_VERSION)
  30.       utilitybase := feelinbase.utility
  31.  
  32.       IF fcc := F_CreateClassA([FA_SuperID,     FC_Gauge,
  33.                                 FA_DataSize,    SIZEOF localobjectdata,
  34.                                 FA_Dispatcher,  {mDispatcher},
  35.                                 NIL])
  36.  
  37.          c := ClientObject,
  38.             FA_Client_Title,        'Gauges_Demo',
  39.             FA_Client_Version,      '$VER: Gauges_Demo 1.00 (23-09-02)',
  40.             FA_Client_Copyright,    '©2000-2002, Olivier Laviale',
  41.             FA_Client_Author,       'Olivier Laviale - (lotan9@aol.com)',
  42.             FA_Client_Description,  'Show gauges & custom class',
  43.             FA_Client_Base,         'GAUGES_DEMO',
  44.  
  45.             FA_Pen_Shine,     'c:FFDCA0',
  46.             FA_Pen_Fill,      'c:AA7864',
  47.             FA_Pen_Highlight, 'c:2A1E19',
  48.  
  49.             Child, w := WindowObject,
  50.                FA_ID,   "MAIN",
  51.                FA_Window_Title,'Feelin : Gauges',
  52.                FA_Back, FI_Fill,
  53.  
  54.                Child, VGroup,
  55.                   Child, g := HGroup,
  56.                      Child, VGroup,
  57.                         Child, Gauge(TRUE,0,100,25),
  58.                         Child, Gauge(TRUE,0,100,50),
  59.                         Child, Gauge(TRUE,0,100,75),
  60.                         Child, Gauge(TRUE,0,100,100),
  61.                         Child, F_NewObjA(fcc.id,[FA_Horizontal,      TRUE,
  62.                                                  FA_Frame,           FP_Frame_Gauge,
  63.                                                  DontChain,
  64.                                                  FA_Numeric_Max,     100,
  65.                                                  FA_CrazyGauge_Mode, FV_CrazyGauge_Crary,
  66.                                                  NIL]),
  67.                      End,
  68.  
  69. ->                     Child, Bar,
  70.                      Child, BalanceObject, FA_ID,"BLNC", FA_Balance_QuickDraw, TRUE, End,
  71.  
  72.                      Child, VGroup, FA_FixedHeight,TRUE,
  73.                         Child, F_NewObjA(fcc.id,[FA_Horizontal,      TRUE,
  74.                                                  FA_Frame,           FP_Frame_Gauge,
  75.                                                  DontChain,
  76.                                                  FA_Numeric_Max,     100,
  77.                                                  FA_Numeric_Value,   0,
  78.                                                  FA_CrazyGauge_Mode, FV_CrazyGauge_TwoWays,
  79.                                                  NIL]),
  80.  
  81.                         Child, F_NewObjA(fcc.id,[FA_Horizontal,      TRUE,
  82.                                                  FA_Frame,           FP_Frame_Gauge,
  83.                                                  DontChain,
  84.                                                  FA_Numeric_Max,     100,
  85.                                                  FA_Numeric_Value,   100,
  86.                                                  FA_CrazyGauge_Mode, FV_CrazyGauge_TwoWays,
  87.                                                  NIL]),
  88.  
  89.                         Child, F_NewObjA(fcc.id,[FA_Horizontal,      TRUE,
  90.                                                  FA_Frame,           FP_Frame_Gauge,
  91.                                                  DontChain,
  92.                                                  FA_Numeric_Max,     100,
  93.                                                  FA_Numeric_Value,   0,
  94.                                                  FA_CrazyGauge_Mode, FV_CrazyGauge_TwoWays,
  95.                                                  NIL]),
  96.  
  97.                         Child, F_NewObjA(fcc.id,[FA_Horizontal,      TRUE,
  98.                                                  FA_Frame,           FP_Frame_Gauge,
  99.                                                  DontChain,
  100.                                                  FA_Numeric_Max,     100,
  101.                                                  FA_Numeric_Value,   100,
  102.                                                  FA_CrazyGauge_Mode, FV_CrazyGauge_TwoWays,
  103.                                                  NIL]),
  104.                      End,
  105.                   End,
  106.  
  107.                   Child, b := TextObject,
  108.                      FA_InputMode,        FV_InputMode_Toggle,
  109.                      FA_Fixed,            TRUE,
  110.                      FA_Inner,            [6,3,6,3]:CHAR,
  111.                      FA_Frame,            033,
  112.                      FA_AltFrame,         000,
  113.                      FA_Back,             FI_Fill,
  114.                      FA_AltBack,          FI_Dark,
  115.                      FA_Text,             'Toggle Gauges Look',
  116.                      FA_Text_PreParse,    '`Ss`Sh`<0>',
  117.                      FA_Text_AltPreParse, '`Sn`<1>',
  118.                      FA_Text_VCenter,     TRUE,
  119.                      End,
  120.                End,
  121.  
  122.                FA_Window_ActiveObject, b,
  123.             End,
  124.          End
  125.  
  126.          IF c
  127.             F_DoA(b,FM_Notify,[FA_Selected,FV_Notify_Always,g,5,FM_Set,FA_Gauge_Simple,FV_Notify_Value,FA_Group_Forward,TRUE])
  128.             F_DoA(w,FM_Notify,[FA_Window_CloseRequest,TRUE,FV_Notify_Client,2,FM_Client_ReturnID,FV_Client_Quit])
  129.             F_Set(w,FA_Window_Open,TRUE)
  130.  
  131.             F_DoA(c,FM_Client_Run,NIL)
  132.  
  133.             F_DisposeObj(c)
  134.          ENDIF
  135.  
  136.          F_RemoveClass(fcc)
  137.       ENDIF
  138.  
  139.       CloseLibrary(feelinbase)
  140.    ENDIF
  141. ENDPROC
  142.  
  143. PROC mDispatcher(cl=A2:PTR TO feelinClass,obj=A0:PTR TO feelinObject,method=D0,args=A1)
  144.    DEF lod:PTR TO localobjectdata
  145.  
  146.    sys_RGlob() ; lod := INST_DATA(cl,obj)
  147.  
  148.    SELECT method
  149.       CASE FM_New;         RETURN mNew(cl,obj,lod,args)
  150.       CASE FM_Show;               F_DoA(obj,FM_ModifyHandler,[IDCMP_INTUITICKS,NIL])
  151.       CASE FM_Hide;               F_DoA(obj,FM_ModifyHandler,[NIL,IDCMP_INTUITICKS])
  152.       CASE FM_HandleEvent; RETURN mHandleEvent(obj,lod,args)
  153.       DEFAULT;             RETURN F_SuperDoA(cl,obj,method,args)
  154.    ENDSELECT
  155. ENDPROC
  156. PROC mNew(cl,obj,lod:PTR TO localobjectdata,args)
  157.    IF F_SuperDoA(cl,obj,FM_New,args)
  158.       lod.mode := GetTagData(FA_CrazyGauge_Mode,FV_CrazyGauge_More,args)
  159.       lod.way  := TRUE
  160.  
  161.       RETURN obj
  162.    ENDIF
  163. ENDPROC
  164. PROC mHandleEvent(obj,lod:PTR TO localobjectdata,he:PTR TO FS_HandleEvent)
  165.    DEF val,max,min
  166.  
  167.    IF he.msg.class = IDCMP_INTUITICKS
  168.       F_DoA(obj,FM_Get,[
  169.                 FA_Numeric_Value,  {val},
  170.                 FA_Numeric_Max,    {max},
  171.                 FA_Numeric_Min,    {min}, NIL])
  172.  
  173.       SELECT lod.mode
  174.          CASE FV_CrazyGauge_More
  175.             F_Set(obj,FA_Numeric_Value,IF val = max THEN min ELSE val + 1)
  176.          CASE FV_CrazyGauge_Less
  177.             F_Set(obj,FA_Numeric_Value,IF val = min THEN max ELSE val - 1)
  178.          CASE FV_CrazyGauge_TwoWays
  179.             IF lod.way
  180.                IF val = max
  181.                   lod.way := FALSE
  182.                ELSE
  183.                   F_Set(obj,FA_Numeric_Value,val + 1)
  184.                ENDIF
  185.             ELSE
  186.                IF val = min
  187.                   lod.way := TRUE
  188.                ELSE
  189.                   F_Set(obj,FA_Numeric_Value,val - 1)
  190.                ENDIF
  191.             ENDIF
  192.          CASE FV_CrazyGauge_Crary
  193.             F_Set(obj,FA_Numeric_Value,Rnd(max))
  194.       ENDSELECT
  195.    ENDIF
  196. ENDPROC
  197.